A crash dump, also known as a core dump, memory dump, or a system dump, contains the memory state of a computer system at a given time which is written to storage by the system, usually in the case of a system crash or fatal error. Crash dumps can be used with or without manual intervention to aid in debugging certain problem scenarios, such as the cause of the crash or error. Normally, analysis of crash dump files through a debugging program requires an engineer to run through certain decisions making processes to arrive at a conclusive result. These decision paths are typically taken based on command outputs from the debugger and can range from outputting a single variable to long-running and lengthy output macros. Often, these decision paths are repetitive and based on certain familiar or popular command outputs.
With cheaper dynamic/static random access memory (DRAM/SRAM), systems with large amounts of RAM are becoming commonplace. Several high end systems like enterprise storage controllers benefit greatly from more RAM in providing high end solutions. Correspondingly, the crash dumps generated from such systems are no longer small and continue increasing in the range of their system memory. Uploading these large crash dumps to remote support sites introduces several issues in regards to bandwidth limitations and unsuccessful or corrupted file transfers. Compression can be used to reduce the crash dump file size to some extent, but running compression algorithms on extremely large files can take hours or even days to compress and decompress.
In addition, analysis of crash dumps is greatly aided by symbol files containing debug symbol tables, which are data structures used by debuggers, compilers, and interpreters to store information about the occurrence of various entities such as variable names, function names, objects, classes, interfaces, etc. in program code. Since these symbol files can be used in reverse engineering programs, they are important company assets and any compromise with these assets is not acceptable.
The proposed system aims to provide a single, full-fledged solution to eliminate the need to upload huge crash dump files while also providing the debugger with the required symbol lookups with enough security to protect the symbol files from both the customer site as well as the internet. The system offloads all the manual work done by an engineer to an automated system through the use of decision trees.